wait_timeout = "120"
ftp_cmd = [
    {
        "cmd": 'AT+FTPPORT=10086',
        "match": 'AT\+FTPPORT=10086\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPORT?',
        "match": 'AT\+FTPPORT\?\s{4}\+FTPPORT: 10086\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPORT=21',
        "match": 'AT\+FTPPORT=21\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPORT?',
        "match": 'AT\+FTPPORT\?\s{4}\+FTPPORT: 21\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPORT=?',
        "match": 'AT\+FTPPORT=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPMODE=1',
        "match": 'AT\+FTPMODE=1\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPMODE?',
        "match": 'AT\+FTPMODE\?\s{4}\+FTPMODE: 1\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPMODE=?',
        "match": 'AT\+FTPMODE=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPTYPE=A',
        "match": 'AT\+FTPTYPE=A\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPTYPE?',
        "match": 'AT\+FTPTYPE\?\s{4}\+FTPTYPE: "A"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPTYPE=I',
        "match": 'AT\+FTPTYPE=I\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPTYPE?',
        "match": 'AT\+FTPTYPE\?\s{4}\+FTPTYPE: "I"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPTYPE=?',
        "match": 'AT\+FTPTYPE=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT=APPE',
        "match": 'AT\+FTPPUTOPT=APPE\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT?',
        "match": 'AT\+FTPPUTOPT\?\s{4}\+FTPPUTOPT: "APPE"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT=STOU',
        "match": 'AT\+FTPPUTOPT=STOU\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT?',
        "match": 'AT\+FTPPUTOPT\?\s{4}\+FTPPUTOPT: "STOU"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT=STOR',
        "match": 'AT\+FTPPUTOPT=STOR\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT?',
        "match": 'AT\+FTPPUTOPT\?\s{4}\+FTPPUTOPT: "STOR"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTOPT=?',
        "match": 'AT\+FTPPUTOPT=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPREST?',
        "match": 'AT\+FTPREST\?\s{4}\+FTPREST: 0\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPREST=?',
        "match": 'AT\+FTPREST=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSERV="36.7.87.100"',
        "match": 'AT\+FTPSERV="36.7.87.100"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSERV?',
        "match": 'AT\+FTPSERV\?\s{4}\+FTPSERV: "36.7.87.100"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSERV=?',
        "match": 'AT\+FTPSERV=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPUN="User"',
        "match": 'AT\+FTPUN="User"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPUN?',
        "match": 'AT\+FTPUN\?\s{4}\+FTPUN: "User"\s{2}'
    },
    {
        "cmd": 'AT+FTPUN=?',
        "match": 'AT\+FTPUN=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPW="123456"',
        "match": 'AT\+FTPPW="123456"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPW?',
        "match": 'AT\+FTPPW\?\s{4}\+FTPPW: "123456"\s{2}'
    },
    {
        "cmd": 'AT+FTPPW=?',
        "match": 'AT\+FTPPW=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME="ftp_get_test.txt"',
        "match": 'AT\+FTPGETNAME="ftp_get_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME?',
        "match": 'AT\+FTPGETNAME\?\s{4}\+FTPGETNAME: "ftp_get_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME=?',
        "match": 'AT\+FTPGETNAME=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPGETPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH?',
        "match": 'AT\+FTPGETPATH\?\s{4}\+FTPGETPATH: "/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH=?',
        "match": 'AT\+FTPGETPATH=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME="ftp_put_test.txt"',
        "match": 'AT\+FTPPUTNAME="ftp_put_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME?',
        "match": 'AT\+FTPPUTNAME\?\s{4}\+FTPPUTNAME: "ftp_put_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME=?',
        "match": 'AT\+FTPPUTNAME=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPPUTPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH?',
        "match": 'AT\+FTPPUTPATH\?\s{4}\+FTPPUTPATH: "/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH=?',
        "match": 'AT\+FTPPUTPATH=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPMKD=?',
        "match": 'AT\+FTPMKD=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPRMD=?',
        "match": 'AT\+FTPRMD=\?\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSTATE',
        "match": 'AT\+FTPSTATE\s{4}\+FTPSTATE: \d\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSCONT?',
        "match": 'AT\+FTPSCONT\?\s{4}\+FTPSCONT: \d\s{2}\+FTPSERV: "36.7.87.100"\s{2}\+FTPPORT: 21\s{2}\+FTPUN: "User"\s{2}\+FTPPW: "123456"\s{2}\+FTPCID: 1\s{2}\+FTPMODE: 1\s{2}\+FTPTYPE: "I"\s{2}\+FTPPUTOPT: "STOR"\s{2}\+FTPREST: 0\s{2}\+FTPGETNAME: "ftp_get_test.txt"\s{2}\+FTPGETPATH: "/Luat_AT_FTP_Test/"\s{2}\+FTPPUTNAME: "ftp_put_test.txt"\s{2}\+FTPPUTPATH: "/Luat_AT_FTP_Test/"\s{2}\+FTPTIMEOUT: 0\s{4}OK\s{2}',
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPSCONT',
        "match": 'AT\+FTPSCONT\s{4}OK\s{2}',
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+SAPBR=3,1,"Contype","GPRS"',
        "match": 'AT\+SAPBR=3,1,"Contype","GPRS"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+SAPBR=3,1,"APN",""',
        "match": 'AT\+SAPBR=3,1,"APN",""\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+SAPBR=1,1',
        "match": 'AT\+SAPBR=1,1\s{4}OK\s{2}',
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+SAPBR=2,1',
        "match": 'AT\+SAPBR=2,1\s{4}\+SAPBR: \d,\d,"[\.\d]+"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPCID=1',
        "match": 'AT\+FTPCID=1\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPSERV="36.7.87.100"',
        "match": 'AT\+FTPSERV="36.7.87.100"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPUN=User',
        "match": 'AT\+FTPUN=User\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPW=123456',
        "match": 'AT\+FTPPW=123456\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH="/"',
        "match": 'AT\+FTPGETPATH="/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPLIST=1',
        "match": 'AT\+FTPLIST=1\s{4}OK\s{4}\+FTPLIST: 1,1\s{2}',
        "wait": b'+FTPLIST: 1,1',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPLIST=2,1460',
        "match": 'AT\+FTPLIST=2,1460\s{4}\+FTPLIST: 2,\d+\s{2}(?:.|\n)*\s{2}OK\s{2}',
        'loop': 4,
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPQUIT',
        "match": 'AT\+FTPQUIT\s{4}OK\s{4}\+FTPLIST: 1,86\s{2}',
        "wait": b'+FTPLIST: 1,86',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPGETPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME="ftp_get_test.txt"',
        "match": 'AT\+FTPGETNAME="ftp_get_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGET=1',
        "match": 'AT\+FTPGET=1\s{4}OK\s{4}\+FTPGET: 1,1\s{2}',
        "wait": b'+FTPGET: 1,1',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGET=2,1460',
        "match": 'AT\+FTPGET=2,1460\s{4}\+FTPGET: 2,107\s{2}\d{107}\s{2}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPQUIT',
        "match": 'AT\+FTPQUIT\s{4}OK\s{4}\+FTPGET: 1,86\s{2}',
        "wait": b'+FTPGET: 1,86',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPSIZE',
        "match": 'AT\+FTPSIZE\s{4}OK\s{4}\+FTPSIZE: 1,0,107\s{2}',
        "wait": b'+FTPSIZE: 1,0,107',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/DIRTest/"',
        "match": 'AT\+FTPGETPATH="/Luat_AT_FTP_Test/DIRTest/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPMKD',
        "match": 'AT\+FTPMKD\s{4}OK\s{4}\+FTPMKD: 1,0\s{2}',
        "wait": b'+FTPMKD: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPRMD',
        "match": 'AT\+FTPRMD\s{4}OK\s{4}\+FTPRMD: 1,0\s{2}',
        "wait": b'+FTPRMD: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPSERV="36.7.87.99"',
        "match": 'AT\+FTPSERV="36.7.87.99"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGET=1',
        "match": 'AT\+FTPGET=1\s{4}OK\s{4}\+FTPGET: 1,63\s{2}',
        "wait": b'+FTPGET: 1,63',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGET=2,1460',
        "match": 'AT\+FTPGET=2,1460\s{4}\+CME ERROR: 3\s{4}'
    },
    {
        "cmd": 'AT+FTPSERV="36.7.87.100"',
        "match": 'AT\+FTPSERV="36.7.87.100"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPUN=Useraaa',
        "match": 'AT\+FTPUN=Useraaa\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGET=1',
        "match": 'AT\+FTPGET=1\s{4}OK\s{4}\+FTPGET: 1,72\s{2}',
        "wait": b'+FTPGET: 1,72',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGET=2,1460',
        "match": 'AT\+FTPGET=2,1460\s{4}\+CME ERROR: 3\s{4}'
    },
    {
        "cmd": 'AT+FTPUN=User',
        "match": 'AT\+FTPUN=User\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPW=123456-w',
        "match": 'AT\+FTPPW=123456-w\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGET=1',
        "match": 'AT\+FTPGET=1\s{4}OK\s{4}\+FTPGET: 1,72\s{2}',
        "wait": b'+FTPGET: 1,72',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGET=2,1460',
        "match": 'AT\+FTPGET=2,1460\s{4}\+CME ERROR: 3\s{4}'
    },
    {
        "cmd": 'AT+FTPPW=123456',
        "match": 'AT\+FTPPW=123456\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPPUTPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME="ftp_put_test.txt"',
        "match": 'AT\+FTPPUTNAME="ftp_put_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUT=1',
        "match": 'AT\+FTPPUT=1\s{4}OK\s{4}\+FTPPUT: 1,1,1360\s{2}',
        "wait": b'+FTPPUT: 1,1,1360',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPPUT=2,1360',
        "match": 'AT\+FTPPUT=2,1360\s{4}\+FTPPUT: 2,1360\s{2}',
        "wait": b'+FTPPUT: 2,1360',
        "timeout": wait_timeout
    },
    {
        "cmd": '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
        "match": '\s{2}OK\s{4}\+FTPPUT: 1,1,1360\s{2}',
        'enter': False,
        "wait": b'+FTPPUT: 1,1,1360',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPQUIT',
        "match": 'AT\+FTPQUIT\s{4}OK\s{4}\+FTPPUT: 1,86\s{2}',
        "wait": b'+FTPPUT: 1,86',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGETNAME="ftp_get_test.txt"',
        "match": 'AT\+FTPGETNAME="ftp_get_test\.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPGETPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPEXTGET=1',
        "match": 'AT\+FTPEXTGET=1\s{4}OK\s{4}\+FTPEXTGET: 1,0\s{2}',
        "wait": b'+FTPEXTGET: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPEXTGET?',
        "match": 'AT\+FTPEXTGET\?\s{4}\+FTPEXTGET: 1,107\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPEXTGET=2,ftp_get_test.txt',
        "match": 'AT\+FTPEXTGET=2,ftp_get_test.txt\s{4}\+FTPEXTGET: 2,107\s{4}OK\s{2}',
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPEXTGET=3,0,1360',
        "match": 'AT\+FTPEXTGET=3,0,1360\s{4}\+FTPEXTGET: 3,107\s{2}\d{107}\s{2}OK\s{2}',
        "wait": b'OK',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPEXTGET=0',
        "match": 'AT\+FTPEXTGET=0\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPPUTPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME="ftp_put_test.txt"',
        "match": 'AT\+FTPPUTNAME="ftp_put_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPEXTPUT=1',
        "match": 'AT\+FTPEXTPUT=1\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPEXTPUT=2,0,5,10000',
        "match": 'AT\+FTPEXTPUT=2,0,5,10000\s{4}\+FTPEXTPUT: 0,5'
    },
    {
        "cmd": '12345',
        "match": '\s{2}OK\s{2}',
        'enter': False
    },
    {
        "cmd": 'AT+FTPEXTPUT=2,5,7,10000',
        "match": 'AT\+FTPEXTPUT=2,5,7,10000\s{4}\+FTPEXTPUT: 5,7'
    },
    {
        "cmd": 'abcdefg',
        "match": '\s{2}OK\s{2}',
        'enter': False
    },
    {
        "cmd": 'AT+FTPPUT=1',
        "match": 'AT\+FTPPUT=1\s{4}OK\s{4}\+FTPPUT: 1,0\s{2}',
        "wait": b'+FTPPUT: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPEXTPUT=0',
        "match": 'AT\+FTPEXTPUT=0\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME="ftp_get_test.txt"',
        "match": 'AT\+FTPGETNAME="ftp_get_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPGETPATH="\/Luat_AT_FTP_Test\/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETTOFS=0,"ftp_get_test.txt"',
        "match": 'AT\+FTPGETTOFS=0,"ftp_get_test.txt"\s{4}OK\s{4}\+FTPGETTOFS: 0,107\s{2}',
        "wait": b'+FTPGETTOFS: 0,107',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPGETTOFS?',
        "match": 'AT\+FTPGETTOFS\?\s{4}\+FTPGETTOFS: 0\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPPUTPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME="ftp_putfrmfs_test.txt"',
        "match": 'AT\+FTPPUTNAME="ftp_putfrmfs_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTFRMFS="/USER/FTP/ftp_get_test.txt"',
        "match": 'AT\+FTPPUTFRMFS="/USER/FTP/ftp_get_test.txt"\s{4}OK\s{4}\+FTPPUTFRMFS: 0,107\s{2}',
        "wait": b'+FTPPUTFRMFS: 0,107',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPPUTFRMFS?',
        "match": 'AT\+FTPPUTFRMFS\?\s{4}\+FTPPUTFRMFS: 0\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPPUTPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUTNAME="ftp_fileput_test.txt"',
        "match": 'AT\+FTPPUTNAME="ftp_fileput_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPFILEPUT=1,"/USER/FTP/ftp_get_test.txt"',
        "match": 'AT\+FTPFILEPUT=1,"/USER/FTP/ftp_get_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPPUT=1',
        "match": 'AT\+FTPPUT=1\s{4}OK\s{4}\+FTPPUT: 1,0\s{2}',
        "wait": b'+FTPPUT: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+FTPFILEPUT=0',
        "match": 'AT\+FTPFILEPUT=0\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETPATH="/Luat_AT_FTP_Test/"',
        "match": 'AT\+FTPGETPATH="/Luat_AT_FTP_Test/"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPGETNAME="ftp_put_test.txt"',
        "match": 'AT\+FTPGETNAME="ftp_put_test.txt"\s{4}OK\s{2}'
    },
    {
        "cmd": 'AT+FTPDELE',
        "match": 'AT\+FTPDELE\s{4}OK\s{4}\+FTPDELE: 1,0\s{2}',
        "wait": b'+FTPDELE: 1,0',
        "timeout": wait_timeout
    },
    {
        "cmd": 'AT+SAPBR=0,1',
        "match": '.*'
    }
]
